#ifndef GUI_SLIDER_H
#define GUI_SLIDER_H

#include <string>

//#include "BaseElement.h"
#include "gdn/GDN.h"

namespace gui
{
	class Slider //: BaseElement
	{
		public:
			Slider();
			Slider( const gdn::Vector2f& thePos, float theWidth,
			        int theScaleMin, int theScaleMax, int theScaleDefault,
			        gdn::Image& theScaleImage, gdn::Image& theSliderImage,
			        const gdn::Rectanglei& theScaleLeft, const gdn::Rectanglei& theScaleMiddle, const gdn::Rectanglei& theScaleRight,
			        const gdn::Rectanglei& theSliderIdle, const gdn::Rectanglei& theSliderHover, const gdn::Rectanglei& theSliderPress );

			virtual int  Process( const gdn::Event& event );
			virtual void Draw( gdn::Window& window );
			virtual void Draw( gdn::RenderImage& renderImage );

			virtual int GetCurrentScale() const;

		protected:
			gdn::Vector2f pos;
			float width;

			int scaleMin;
			int scaleMax;
			int scaleDefault;

			int currentScale;

			gdn::Image* scaleImage;
			gdn::Image* sliderImage;

			gdn::Rectanglei scaleLeft;
			gdn::Rectanglei scaleMiddle;
			gdn::Rectanglei scaleRight;

			gdn::Rectanglei sliderIdle;
			gdn::Rectanglei sliderHover;
			gdn::Rectanglei sliderPress;

			gdn::Sprite scale;
			gdn::Sprite slider;

			virtual void DrawScale( gdn::RenderImage& renderImage );
			virtual void DrawScale( gdn::Window& window );
			virtual void ProcessSliderHighlight();
			virtual void MoveSlider();

			bool hold;
			gdn::Vector2f mousePos;
	};
}

#endif // GUI_SLIDER_H
